library(tidyverse)
library(tmap)
library(tmaptools)
library(rgdal)
library(OpenStreetMap)
library(reshape)
library(sf)
library(cartogram)
library(maptools)

1. 데이터 전처리

데이터 전처리는 shape파일을 데이터 프레임으로 바꾸고, 확진자 수 데이터 프레임과 합치고, 다시 shp 파일로 전환하였다.

n1<-read.csv("mm2.csv")
n1<-filter(n1,자치구.기준일%in%"sss")
n2 <- melt(data = n1,  id.vars = c("자치구.기준일"),  measure.vars = c("종로구", "중구","용산구","성동구", "광진구", "동대문구", "중랑구","성북구","강북구","도봉구","노원구","은평구","서대문구","마포구","양천구","강서구","구로구","금천구","영등포구","동작구","관악구","서초구","강남구","송파구","강동구"))
n3<-st_read("seoulGU.shp")
## Reading layer `seoulGU' from data source `C:\ex8\seoulGU.shp' using driver `ESRI Shapefile'
## Simple feature collection with 25 features and 4 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 935035.2 ymin: 1936666 xmax: 972067.6 ymax: 1966987
## Projected CRS: PCS_ITRF2000_TM
names(n2)<-c("a","SIG_KOR_NM","확진자")
n4<-merge(n2,n3,by="SIG_KOR_NM")
n4<-st_as_sf(n4)

2. 확진자 카토그램(21년 3월)

연속적 카토그램이다.

n5<- cartogram_cont(n4, "확진자", itermax = 5)
tmap_mode("view")
tm_shape(n5) + tm_polygons("확진자", style = "jenks")

3.확진자 카토그램 (21년 1월)

불연속적 카토그램이다.

m1<-read.csv("mm2.csv")
m1<-filter(m1,자치구.기준일%in%"aaa")
m2 <- melt(data = m1,  id.vars = c("자치구.기준일"),  measure.vars = c("종로구", "중구","용산구","성동구", "광진구", "동대문구", "중랑구","성북구","강북구","도봉구","노원구","은평구","서대문구","마포구","양천구","강서구","구로구","금천구","영등포구","동작구","관악구","서초구","강남구","송파구","강동구"))
m3<-st_read("seoulGU.shp")
## Reading layer `seoulGU' from data source `C:\ex8\seoulGU.shp' using driver `ESRI Shapefile'
## Simple feature collection with 25 features and 4 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 935035.2 ymin: 1936666 xmax: 972067.6 ymax: 1966987
## Projected CRS: PCS_ITRF2000_TM
names(m2)<-c("a","SIG_KOR_NM","확진자")
m4<-merge(m2,m3,by="SIG_KOR_NM")
m4<-st_as_sf(m4)
m5<- cartogram_ncont(m4, "확진자")
tmap_mode("view")
tm_shape(m5) + tm_polygons("확진자", style = "jenks")

4. 확진자 카토그램(20년3월)

돌링 면형 카토그램이다.

c1<-read.csv("mm2.csv")
c1<-filter(c1,자치구.기준일%in%"bbb")
c2 <- melt(data = c1,  id.vars = c("자치구.기준일"),  measure.vars = c("종로구", "중구","용산구","성동구", "광진구", "동대문구", "중랑구","성북구","강북구","도봉구","노원구","은평구","서대문구","마포구","양천구","강서구","구로구","금천구","영등포구","동작구","관악구","서초구","강남구","송파구","강동구"))
c3<-st_read("seoulGU.shp")
## Reading layer `seoulGU' from data source `C:\ex8\seoulGU.shp' using driver `ESRI Shapefile'
## Simple feature collection with 25 features and 4 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 935035.2 ymin: 1936666 xmax: 972067.6 ymax: 1966987
## Projected CRS: PCS_ITRF2000_TM
names(c2)<-c("a","SIG_KOR_NM","확진자")
c4<-merge(c2,c3,by="SIG_KOR_NM")
c4<-st_as_sf(c4)
leesuckjun<- cartogram_dorling(c4, "확진자")
tmap_mode("view")
tm_shape(c4) + tm_borders() +
  tm_shape(leesuckjun) + tm_polygons("확진자", style = "jenks")